/**
 * 
 */
package com.faxsun.core.service;

import java.util.List;

import com.faxsun.core.pojos.enums.TagType;

import mblog.core.pojos.Tag;
import mtons.modules.pojos.Page;

/**
 * @author langhsu
 * @author songdragon
 */
public interface TagService {
	/**
	 * top 查询 Tag
	 * @param maxResutls
	 * @param loadPost 是否加载 tag 最后更新文章
	 * @return
	 */
	List<Tag> topTags(int maxResutls, boolean loadPost);
	
	/**
	 * 评论添加 Tag
	 * @param tags
	 */
	void batchPost(List<Tag> tags);
	
	/**
	 * 更新热度
	 * @param name
	 */
	void identityHots(String name);
	
	/**
	 * 更新热度
	 * @param name
	 */
	void identityHots(long id);
	
	/**
	 * 列出指定类型的tag。若tagType为{@link TagType#INVALID}，则列出所有tag
	 * @param tagType
	 * @return
	 * @author songdragon
	 * @date 2015-04-15 21:52
	 */
	List<Tag> listTags(TagType tagType,Page page);
	
	/**
	 * 保存或更新tag
	 * @param tag
	 * @return
	 * @author songdragon
	 * @date 2015-04-16 14:26
	 */
	Tag saveTag(Tag tag);
	
	/**
	 * 获取tag详细信息
	 * @param name
	 * @return
	 */
	Tag get(String name);
	
	/**
	 * 根据Id获取tag
	 * @param id
	 * @return
	 */
	Tag getById(long id);
	
	/**
	 * 根据query查询名字包含query的tag
	 * @param tagName
	 * @param page
	 * @return
	 */
	List<Tag> queryTags(String tagName, Page page);
	
	/**
	 * 删除Tag
	 * @param id
	 * @return
	 */
	boolean delete(Long id);
	
	/**
	 * 评论数增1
	 * @param id
	 * @author songdragon 2015-04-28 18:54
	 */
	void identityComments(Long id);
	
	/**
	 * 评论数增step
	 * @param id
	 * @author songdragon 2015-04-28 18:54
	 */
	void identityComments(Long id, int step);
	
	/**
	 * 获取后台设置的导航tag
	 * @param module 导航标签应用的模块：采用按位或,01：资讯；10：评测，11:both
	 * @return
	 * @author songdragon 2015-05-12 13:40
	 */
	List<Tag> listNavTags(int module);
}
